import Foundation
import SwiftyJSON

//lkm
class ResponEntity: AnyObject {
    
    static let Code_Fail_Net = 9999;//网络加载失败
    
    static let Code_Autho_Fail=2;// 验证失败,验证失败，也就是可token过期了
    static let Code_Success = 1;// 成功
    static let Code_Fail_TipsMsg = 0;// 失败有提示
    static let Code_Fail_NotTipsMsg = -1;// 失败没提示 后台没这个
    
    static let Code_Login_time_fail = 201;// 登录时间戳不对
    
    
    static let Code_NoData = 333333;// 没有更多数据，应该说是“没有数据”
    
    var res: Int=0;//1
    var msg: String?;//"分享成功！"
    var data: Any?;//
    
    /**
     dict 的JSON一定是有数据的最起码是{"reg":"0","msg":"msg"}
     isDataNotNil 一定要有数据
    */
    init(dict: JSON,isDataNotNil:Bool ,data :(JSON)->Any ) {
        
        self.res = dict["res"].intValue;
        self.msg = dict["msg"].stringValue;
        
        //没有就是nil啊。{}也认为是空
        self.data=nil;
        let datap=dict["data"];
        if datap != nil{
            if(datap.isEmpty){
                self.data=nil
            }else{
                self.data = data(datap);
            }
        }
        
        if(self.data==nil){
            if(isDataNotNil && isSuccess()){
                //一定要有数据,不然就是失败
                self.res=ResponEntity.Code_Fail_TipsMsg;
                self.msg="服务器繁忙";
            }
        }
        
    }
    init(_ code:Int,_ msg :String,_ data:AnyObject?) {
        res=code;
        self.msg=msg;
        self.data=data;
    }
    
    func getData()->Any?{
        return data;
    }
    
    /**
     网络加载失败
     */
    class func netFail() -> ResponEntity{
        return ResponEntity(Code_Fail_Net,"",nil);
    }
    /**
     失败
     */
    class func Fail() -> ResponEntity{
        return ResponEntity(Code_Fail_NotTipsMsg,"",nil);
    }
    
    func getCode()->Int{
        return res;
    }
    
    func isSuccess() -> Bool {
        return getCode() == ResponEntity.Code_Success || getCode() == ResponEntity.Code_NoData;
    }

//    class func initToList(json: JSON)->[ResponEntity]{
//        if let items = json.arrayObject {
//            var results = [ResponEntity]()
//            for item in items {
//                let result = ResponEntity(dict: item as! [String: AnyObject])
//                results.append(result)
//            }
//            return results;
//        }
//        return [ResponEntity]()
//    }
//    
//    class func initToMap(json: JSON)->Dictionary<String,ResponEntity>{
//        if let items = json.dictionary {
//            var results = Dictionary<String,ResponEntity>()
//            for (key, value):(String, JSON)  in items {
//                let result = ResponEntity(dict: value.object as! [String: AnyObject])
//                results[key] = result
//            }
//            return results;
//        }
//        return Dictionary<String,ResponEntity>()
//    }
    
    
    
}
